14b032c36f039ce4282e6d41772b9f3b89b8356f,enterprise/src/main/java/org/neo4j/graphalgo/impl/path/ShortestPath.java,ShortestPath,internalPaths,#Node#Node#boolean#,162
Before Change
return Arrays.asList( PathImpl.singular( start ) );
}
Map<Integer, Collection<Hit>> hits =
new HashMap<Integer, Collection<Hit>>();
Collection<Long> sharedVisitedRels = new HashSet<Long>();
ValueHolder<Integer> sharedFrozenDepth = new ValueHolder<Integer>( null );
ValueHolder<Boolean> sharedStop = new ValueHolder<Boolean>( false );
ValueHolder<Integer> sharedCurrentDepth = new ValueHolder<Integer>( 0 );
final DirectionData startData = new DirectionData( start,
sharedVisitedRels, sharedFrozenDepth, sharedStop,
sharedCurrentDepth, stopAsap, relExpander );
final DirectionData endData = new DirectionData( end,
sharedVisitedRels, sharedFrozenDepth, sharedStop,
sharedCurrentDepth, stopAsap, relExpander.reversed() );
while ( startData.hasNext() || endData.hasNext() )
{
goOneStep( startData, endData, hits, stopAsap, startData );
goOneStep( endData, startData, hits, stopAsap, startData );
}
return least( hits, start, end );
}
private Collection<Path> least( Map<Integer, Collection<Hit>> hits, Node start, Node end )
After Change
return Arrays.asList( PathImpl.singular( start ) );
}
Hits hits = new Hits();
Collection<Long> sharedVisitedRels = new HashSet<Long>();
ValueHolder<Integer> sharedFrozenDepth = new ValueHolder<Integer>( null );
ValueHolder<Boolean> sharedStop = new ValueHolder<Boolean>( false );
ValueHolder<Integer> sharedCurrentDepth = new ValueHolder<Integer>( 0 );
final DirectionData startData = new DirectionData( start,
sharedVisitedRels, sharedFrozenDepth, sharedStop,
sharedCurrentDepth, stopAsap, relExpander );
final DirectionData endData = new DirectionData( end,
sharedVisitedRels, sharedFrozenDepth, sharedStop,
sharedCurrentDepth, stopAsap, relExpander.reversed() );
while ( startData.hasNext() || endData.hasNext() )
{
goOneStep( startData, endData, hits, stopAsap, startData );
goOneStep( endData, startData, hits, stopAsap, startData );
}
Collection<Hit> least = hits.least();
return least != null ? hitsToPaths( least, start, end ) : Collections.<Path>emptyList();
}
// Few long-lived instances